/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package lcfgly.database;

import java.util.List;
import java.util.Map;

/**
 * LIDatabase
 * 数据库操作抽象类
 * @author lcfgly
 * @Date 2015-1-28 8:40:16
 * @version 1.0
 */
public interface LIDatabase {
    
    /**
     * 执行SQL语句 如果没有抛出异常则说明执行成功
     * @param sql sql语句
     * @param args 语句参数
     * @throws LSqlException 
     */
    void execSql(String sql,Object... args)throws LSqlException;
    
    /**
     * 执行Update语句
     * @param sql sql语句
     * @param args 语句参数
     * @return 返回修改条数
     * @throws LSqlException 
     */
    int updateSql(String sql,Object... args)throws LSqlException;
    
    /**
     * 执行DELETE语句
     * @param sql sql语句
     * @param args 语句参数
     * @return 返回删除条数
     * @throws LSqlException 
     */
    int deleteSql(String sql,Object... args)throws LSqlException;
    
    /**
     * 执行INSERT语句
     * @param sql sql语句
     * @param args 语句参数
     * @return 返回自增ID
     * @throws LSqlException 
     */
    int insertBackId(String sql,Object... args)throws LSqlException;
    
    /**
     * 执行INSERT语句
     * @param sql sql语句
     * @param args 语句参数
     * @return 返回是否执行成功
     * @throws LSqlException 
     */
    boolean insert(String sql,Object... args)throws LSqlException;
    
    /**
     * 统计数据条数
     * @param sql sql语句
     * @param args 语句参数
     * @return 返回sql语句结果条数
     * @throws LSqlException 
     */
    int count(String sql,Object... args)throws LSqlException;
    
    /**
     * 获取一条数据
     * @param sql sql语句
     * @param args 语句参数
     * @return
     * @throws LSqlException 
     */
    Map<String,Object> one(String sql,Object... args)throws LSqlException;
    
    /**
     * 获取一个数据结果集
     * @param sql
     * @param args
     * @return
     * @throws LSqlException 
     */
    List<Map<String,Object>> rows(String sql,Object... args)throws LSqlException;
    
}
